/**
 * 此处使用Object.create(null)而不使用{}的一点说明
 * Object.create(null)创建的对象是纯净的不继承Object的所有方法而只登记用户添加的新方法或者内容
 * 而直接使用{}会继承Object的方法造成性能上的一点点损失
 * Object.create()此方法也可以继承object的方法
 * 例: Object.creat(Object.prototype,{}) 前面的Object.prototype是继承原型链上的属性 后面的{}是添加在新创建的对象上属性此处可以配置
 */
const Dict = Object.create(null)
const dict_key = 'COMMON_DICT_KEY'
import {loadDict} from '../api'
// 给vue注入插件
Dict.install = (Vue) => {
    let dict_data = {}
    const get = key => {
        if (!dict_data.load) {
			let all = uni.getStorageSync(dict_key)
            if (!all) {
                return
            }
            dict_data.data = all
            dict_data.load = true
            if (!dict_data.data) {
                return key
            }
        }
        // 自定义扩展
        let obj = Object.assign({
            'agree-or-not-1': '同意',
            'agree-or-not-2': '不同意',
            'psych-status-1': '待处理',
            'psych-status-2': '待咨询',
            'psych-status-3': '已拒绝',
            'psych-status-4': '已完成',
            'psych-status-5': '已取消'
        }, dict_data.data)
        return obj[key] || key
    }
    // 注入实例方法
    Vue.prototype.$dict = key => {
        if (key && key.indexOf(',') !== -1) {
            let keys = key.split(',');
            return keys.map(d => get(d)).join(',');
        } else {
            return get(key) || key;
        }
    }
    const load = () => {
        loadDict().then(res => {
            console.log(res);
            if (res.code === 20000) {
				uni.setStorageSync(dict_key, res.data)
            }
        })
    }
    // 加载字典
    load()
    Vue.prototype.$loadDict = load
}

export default Dict
